//////////////////////////////////////////////////////////////////////////

#ifndef _FONTS_H_
#include "fonts.h"
#endif

//////////////////////////////////////////////////////////////////////////

#include <SDL\SDL_ttf.h>

//////////////////////////////////////////////////////////////////////////


const std::string FontsSubfolder = "Fonts";


//////////////////////////////////////////////////////////////////////////


GUI_Fonts::GUI_Fonts(const std::string& _resourcesFolder, float _resizeFactor)
{
    m_FontsFolder = _resourcesFolder;
    m_FontsFolder += "\\" + FontsSubfolder + "\\";

    memset(m_Fonts, 0, sizeof(m_Fonts));
    Resize(_resizeFactor);
}


//////////////////////////////////////////////////////////////////////////


GUI_Fonts::~GUI_Fonts()
{
//    delete []m_FontsFolder;
    for (int i = 0; i < FontCount; ++i)
    {
        if (m_Fonts[i]) 
            TTF_CloseFont(m_Fonts[i]);
    }
}


//////////////////////////////////////////////////////////////////////////


TTF_Font *GUI_Fonts::Get(GUI_Fonts::Font _fontName)
{
    return m_Fonts[_fontName];
}


//////////////////////////////////////////////////////////////////////////


void GUI_Fonts::Resize(float _resizeFactor)
{
    m_ResizeFactor = _resizeFactor;

    InitFonts();
}


//////////////////////////////////////////////////////////////////////////


void GUI_Fonts::InitFonts()
{
    ReloadFont(GUI_Fonts::SplashName,  "GARA.ttf", 0.1F);

    ReloadFont(GUI_Fonts::ButtonText, "Tahoma.ttf", 0.03F);

    ReloadFont(GUI_Fonts::EditText, "Tahoma.ttf", 0.03F);

    ReloadFont(GUI_Fonts::CaptionText, "Tahoma.ttf", 0.06F);
}


//////////////////////////////////////////////////////////////////////////


void GUI_Fonts::ReloadFont(GUI_Fonts::Font _font, const std::string& _fileName, float _size)
{
    if (m_Fonts[_font]) 
        TTF_CloseFont(m_Fonts[_font]);
    m_Fonts[_font] = TTF_OpenFont((m_FontsFolder + _fileName).c_str(), SizeInPixels(_size));
}


//////////////////////////////////////////////////////////////////////////


int GUI_Fonts::SizeInPixels(float Size)
{
    return (int)(Size * m_ResizeFactor);
}


//////////////////////////////////////////////////////////////////////////
